package com.guohe3.just.craw;

import com.guohe3.just.DO.Score;
import com.guohe3.just.DO.Student;
import com.guohe3.just.common.enums.CrawTypeEnum;
import okhttp3.OkHttpClient;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @author 浦希成 【pxc2955317305@outlook.com】
 * @date 2018/6/4  22:16
 */
public interface CrawService {


    /**
     * 登录教务处
     *
     * @param username 教务系统用户名
     * @param password 教务系统密码
     * @return OkHttpClient
     * @throws IOException
     */
    OkHttpClient login(String username, String password, CrawTypeEnum typeEnum) throws IOException;

    /**
     * 爬取成绩
     *
     * @param username 用户名
     * @param password 密码
     * @return list
     * @throws IOException
     */
    List<Score> crawScoreAll(String username, String password, CrawTypeEnum typeEnum) throws IOException;

    /**
     * 爬取学生信息
     *
     * @param username 用户名
     * @param password 密码
     * @return Student
     * @throws IOException
     */
    Student crawStudentInfo(String username, String password, CrawTypeEnum typeEnum) throws Exception;

    /**
     * 爬取课表
     *
     * @param username 用户名
     * @param password 密码
     * @param semester 学期
     * @return list
     * @throws IOException
     */
    List<Map<String, String>> crawSchoolTimetable(String username, String password, String semester, CrawTypeEnum typeEnum) throws IOException;

    /**
     * 爬取绩点
     *
     * @param username 用户名
     * @param password 密码
     * @return list
     */
    List<Map<String, String>> crawJidian(String username, String password, CrawTypeEnum typeEnum) throws IOException;

    /**
     * 获取校历信息
     *
     * @param username 用户名
     * @param password 密码
     * @return list
     * @throws IOException
     */
    List<String> crawAllYearList(String username, String password, CrawTypeEnum typeEnum) throws Exception;
}
